/**
  * purpose: show how to redirect standard input by replacing file
  * 		 descriptor 0 with a connection to a file
  * action:	 reads three lines from standard input, then
  * 		 closes fd 0, opens a disk file, then reads in
  * 		 three more lines from standard input
  */

#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>

int main() {
	int fd;
	char line[100];

	/* read and print three lines */
	fgets(line, 100, stdin);
	printf("%s", line);
	fgets(line, 100, stdin);
	printf("%s", line);
	fgets(line, 100, stdin);
	printf("%s", line);

	/* redirect input */
	close(0); // first close the origin file descriptor 0(which reads from keyboard)
	fd = open("/etc/passwd", O_RDONLY);	// then open a file, and connect fd 0 to it
	if (fd != 0) {
		fprintf(stderr, "Could not open data as fd 0\n");
		exit(1);
	}

	/* read and print three lines */
	fgets(line, 100, stdin);
	printf("%s", line);
	fgets(line, 100, stdin);
	printf("%s", line);
	fgets(line, 100, stdin);
	printf("%s", line);


}
